﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ITAP.ShprossesBuilder.Modelling.Components;
using ITAP.ShprossesBuilder.Calculations;
using System.Drawing;
using ITAP.ShprossesBuilder.Editor;
using ITAP.Core.Calculations;

namespace ITAP.ShprossesBuilder.Modelling.Measurement
{
    public interface IDimensionProcessor : IModelVisitor
    {
       // float FontSize { get; set; }
        bool Enabled { get; set; }
        void AddCompute(Type typeOfComponent);
        void RemoveCompute(Type typeOfComponent);
        bool ContainsCompute(Type typeOfComponent);
        void SetCompute(bool compute, Type typeOfComponent);
        List<Dimension> Dimensions { get; }
        List<Dimension> OffsetDimensions { get; }
        DimensionsPreferences DimensionsPreferences { get; set; }
        void Compute(ModelCell modelCell, ModelCoordinateConverter coordinateConverter, double noizeValue, DimensionSpreadingType dimensionSpreadingType, DimensionsPreferences preferences);
        void Compute(ModelCell modelCell, double noizeValue, DimensionSpreadingType dimensionSpreadingType, DimensionsPreferences preferences);

        RectangleF GetUnionBoundingBox(Type typeOfDimension);
        void RecalculateOffsetDimensions(Type typeOfDimension, RectangleF boundingBox);

    //    void UpdateState(ModelCell modelCell);
    }
}
